서비스 바로가기
C언어

Class 01. C언어의 기초

개요

C언어 -
#include
int main(int argc, char** argv) {
printf(“Hello world
”;
}

장점

C로 짜여진 코드는 속도가 빠르고 바이너리 크기도 작아 속도가 다른 무엇보다 (심지어는 생산성보다도) 중요한 임베디드 혹은 모바일 계열,
또는 시스템 프로그래밍 등에서 주로 사용된다.

사용되는 분야

2015년을 기준으로 C언어는 다음과 같은 분야에서 주로 쓰인다.
운영 체제 및 디바이스 드라이버, 마이크로컨트롤러, 임베디드 시스템, 암호학 라이브러리, 프로그래밍 언어 인터프리터(CPython 등)
웹 서버(Apache 등)
데이터베이스(PostgreSQL 등)
이외에 매우 빠른 계산속도가 필요한 프로그램이나 라이브러리
보면 알겠지만 어플리케이션 레벨 프로그래머에게는 어느 하나 쉬운 분야가 없다(...)
이 분야들에 대해서는 C의 위상이 워낙 굳건하여 C++조차 쓰이지 않는 경우가 많다.
리눅스 창시자 리누스 토발즈는 아예 C++는 수준 이하의 프로그래머들이나 쓰는거라고 디스까지 했다.

성능

C는 유닉스라는 OS를 만들기 위해 어셈블리 대체용으로 만들어진 언어라, 머신 컨트롤의 저수준 작업이 주된 임무 중 하나였다.
그리고 C++은 그 이름에서 보이듯이 사실상 C를 대체하기 위한 언어였기 때문에 C가 제공하던 머신 컨트롤의 저수준 작업들을 포기하지 않고 그대로 지원한다.
거기다 그 위에 여러가지 추상적인 고수준 기능들을 집어넣어 추상적인 시스템 위에서만 노는 게 아니라,
저수준의 기계 제어까지 가능한 추상화라는 요상한 철학을 지지한다.
그래서, Java 같은 언어들이 객체 지향 프로그래밍을 구현하면서 동적 바인딩(C++의 가상 함수)을 디폴트로 쓰고
쓰레기 수집을 지원할 때 C++은 정적 바인딩을 디폴트로 하고 수동 메모리 관리를 유지한 것이다.
일반적으로 추상화 수준이 높은 언어일수록 프로그래머 머리로 해야할 구체적인 것들을 컴퓨터가 대신 해주고,
이것이 항상 최적화된 방식은 아니기 때문에 프로그램의 실행 속도가 상대적으로 느리게 마련이지만,
C++ 프로그램은 위와 같은 이유로 성능 하락이 거의 없다.

강의 카테고리